# -*- coding:utf-8 -*-
# title           :
# description     :
# author          :Python超人/三月三提供
# date            :2024-08-03
# link            :https://gitcode.net/pythoncr/
# python_version  :3.9
# ==============================================================================
import os
from 神笔码靓.码靓库.共用.诗经集 import 三字经
from 神笔码靓.码靓库.手机.手机绘图板 import 手机绘图板
from 神笔码靓.神笔库 import 样式工具集
from 神笔码靓.神笔库.定义集 import *
from 神笔码靓.神笔库.神笔绘图板 import 神笔绘图板
from 神笔码靓.神笔库.通用工具集 import *


class 手机彩虹矩阵壁纸(手机绘图板):

    def __init__(self, 作品文件路径, 显示整机=否, 显示状态栏=是, 锁屏=是,锁屏字体颜色=颜色.白色, 手机颜色="#163844"):
        self.屏幕宽, self.屏幕高 = 屏幕分辨率.我的手机()
        super(手机彩虹矩阵壁纸, self).__init__(作品文件路径=作品文件路径, 屏幕大小=(self.屏幕宽, self.屏幕高),
                                       显示整机=显示整机, 显示状态栏=显示状态栏, 锁屏=锁屏,锁屏字体颜色=锁屏字体颜色,手机颜色=手机颜色)

    def 三字经创作(self, 字体):
        三字经_ = 三字经.strip().replace("\n", "").replace("，", "").replace("。", 全角空格)

        # 三字经_ = 全角空格 * 11 + f"三{全角空格}字{全角空格}经" + 全角空格 * 12 \
        #        + 全角空格 * 28 + 三字经_
        # f"王{全角空格}应{全角空格}麟"
        # 三字经_ = 全角空格 * 18 + f"三{全角空格}字{全角空格}经" + 全角空格 * 12 \
        #        + 全角空格 * 21 + 三字经_

        三字经_ = 全角空格 * 4 + f"三{全角空格}字{全角空格}经" + 全角空格 * 9 + f"王{全角空格}应{全角空格}麟" + 全角空格 * 5 \
               + 全角空格 * 28 + 三字经_

        矩形 = self.画矩形(x=0, y=0, 宽=self.屏幕宽, 高=self.屏幕高, 填充颜色=颜色.黑色).添加到列表(self.屏幕元素列表)
        x = 0
        y = 0
        左边距, 右边距 = 70, 50
        上边距 = 165
        字体大小 = 32.6
        元素列表 = 列表()
        for 字 in 三字经_:
            if 字 != 全角空格:
                if 路径是否存在(字体):
                    字元素 = self.文字转路径(x=x * 字体大小 * 1.06 + 左边距, y=y * 字体大小 * 1.11 + 上边距, 文字=字, 填充颜色=颜色.白色,
                                     字体大小=字体大小, 字体文件=字体).添加到列表(self.屏幕元素列表)
                else:
                    字元素 = self.写字(x=x * 字体大小 * 1.06 + 左边距, y=y * 字体大小 * 1.11 + 上边距, 文字=字, 填充颜色=颜色.白色,
                                  字体大小=字体大小, 字体=字体,
                                  水平基线对齐=文字水平基线对齐.起始点对齐, 垂直基线对齐=文字垂直基线对齐.顶线对齐).添加到列表(self.屏幕元素列表)

                元素列表.添加元素(字元素)
            x += 1
            if x > 27:
                x = 0
                y += 1
        偏移X = 0
        开始位置 = (self.屏幕宽 + 偏移X, self.屏幕高)
        结束位置 = (-偏移X, 0)
        渐变色 = self.创建彩虹线性渐变色(开始位置=开始位置, 结束位置=结束位置,
                             关键点偏移=(0, 1.0), 关键点透明度=1, 彩虹七色=样式工具集.彩虹色2)
        矩形 = self.画矩形(x=0, y=0, 宽=self.屏幕宽, 高=self.屏幕高, 填充颜色=渐变色).添加到列表(self.屏幕元素列表)

        裁剪元素_ = self.创建组合(元素列表=元素列表)

        self.遮罩(遮罩元素_=裁剪元素_, 被遮元素=矩形)

    def 创作(self):
        pass

    def 图标创作(self, 图标根目录, 图标缩放, 重复次数):
        矩形 = self.画矩形(x=0, y=0, 宽=self.屏幕宽, 高=self.屏幕高, 填充颜色=颜色.黑色).添加到列表(self.屏幕元素列表)
        偏移X = 0
        开始位置 = (self.屏幕宽 + 偏移X, self.屏幕高)
        结束位置 = (-偏移X, 0)
        渐变色 = self.创建彩虹线性渐变色(开始位置=开始位置, 结束位置=结束位置,
                             关键点偏移=(0, 1.0), 关键点透明度=1, 彩虹七色=样式工具集.彩虹色2)
        矩形 = self.画矩形(x=0, y=0, 宽=self.屏幕宽, 高=self.屏幕高, 填充颜色=渐变色).添加到列表(self.屏幕元素列表)
        图标列数 = 20
        图标宽度 = self.屏幕宽 / 图标列数
        行号 = 0
        列号 = 0
        列宽 = 图标宽度
        行高 = 图标宽度
        元素列表 = 列表()
        图标文件列表 = 列表()
        for fd in 获取目录文件列表(图标根目录):
            if str(fd).endswith(".svg"):
                图标文件列表.添加元素(fd)

        import random
        random.shuffle(图标文件列表)

        图标文件列表 = 图标文件列表 * 重复次数

        for 图标文件 in 图标文件列表:
            SVG图标 = 连接路径(图标根目录, 图标文件)
            元素列表.添加元素(self.导入SVG为组(SVG图标, x=列号 * 列宽, y=行号 * 行高).缩放(图标缩放))
            列号 += 1
            if 列号 > 图标列数:
                列号 = 0
                行号 += 1

        # 模板 = self.创建模板(元素列表=元素列表)
        #
        # 裁剪元素_ = self.创建组合(元素列表=[模板.创造元素(), 模板.创造元素(x=0, y=self.屏幕高 / 3), 模板.创造元素(x=0, y=self.屏幕高 / 3 * 2)])
        裁剪元素_ = self.创建组合(元素列表=元素列表)

        self.遮罩(遮罩元素_=裁剪元素_, 被遮元素=矩形)

        # self.裁剪(裁剪元素_=裁剪元素_, 被裁元素=矩形)

    def 查找指定字符串并更名(self, 目录, 指定字符串):
        # 遍历目录中的所有文件
        for 根目录, _, 文件列表 in os.walk(目录):
            for 文件名 in 文件列表:
                # 只处理文本文件
                if 文件名.endswith('.svg'):
                    文件路径 = os.path.join(根目录, 文件名)
                    是否找到 = 否
                    try:
                        with open(文件路径, 'r', encoding='utf-8') as 文件:
                            # 读取文件内容
                            内容 = 文件.read()
                            # 检查指定字符串是否在内容中
                            if 指定字符串 in 内容.replace("\n", "").replace("\r", ""):
                                print(f"找到指定字符串 '{指定字符串}' 的文件: {文件路径}")
                                是否找到 = 是
                    except Exception as e:
                        print(f"无法读取文件 {文件路径}: {e}")
                    if 是否找到:
                        os.rename(文件路径, 文件路径 + ".txt")

    def 处理SVG描边色(self, 图标根目录):
        import xml.etree.ElementTree as ET
        for fd in 获取目录文件列表(图标根目录):
            if str(fd).endswith(".svg"):
                SVG图标 = 连接路径(图标根目录, fd)
                print(f"处理文件: {SVG图标}")

                # 解析SVG文件
                tree = ET.parse(SVG图标)
                root = tree.getroot()

                # 修改style中的stroke颜色
                for element in root.iter():
                    style = element.get('style')
                    if style and 'stroke' in style:
                        # 替换stroke颜色为white
                        new_style = re.sub(r'stroke:\s*[^;]*;', 'stroke: white;', style)
                        element.set('style', new_style)

                # 保存修改后的SVG文件
                tree.write(SVG图标, encoding='utf-8', xml_declaration=True)
                print(f"已将 {SVG图标} 中的 stroke 颜色改为 white")


def 不支持SVG更名():
    while True:
        try:
            神笔 = 手机彩虹矩阵壁纸(作品文件路径="手机彩虹矩阵壁纸.svg")
            神笔.完成()
            # 神笔.生成PNG(生成方式=PNG生成方式.cairosvg, 缩放=3) # 不支持滤镜
            break
        except Exception as e:
            print(e)
            指定字符串 = str(e)[1:60]
            神笔.查找指定字符串并更名(资源库目录("图标/game-icons"), 指定字符串)

# if __name__ == '__main__':
#     神笔 = 手机彩虹矩阵壁纸(作品文件路径="手机彩虹矩阵壁纸.svg")
#
#     # 资源库目录("图标/game-icons")
#     # 神笔.图标创作(资源库目录("图标/marketeq"), 图标缩放=0.5, 重复次数=3)
#     # 神笔.图标创作(资源库目录("图标/park-outline"), 图标缩放=0.3, 重复次数=3)
#     # 神笔.三字经创作(系统字体.幼圆)
#     神笔.三字经创作(字体文件目录("小篆体.ttf"))
#
#     神笔.完成()
#     # 神笔.生成PNG(生成方式=PNG生成方式.cairosvg, 缩放=3) # 不支持滤镜
#
#     # https://svgtopng.com/zh/  SVG 转 PNG 滤镜支持
#     # 神笔.生成PNG(生成方式=PNG生成方式.cairosvg, 缩放=3) # 不支持滤镜
#     # 神笔.处理SVG描边色(资源库目录("图标/game-icons"))
#     # 神笔.查找指定字符串(资源库目录("图标/game-icons"),
#     #            "M175.58 22.85a59 59 0 0 0-6.525.388c-34.765 4.01-67.404 36.405-81.116 87.473c-7.775 28.958-22.882")
